 /* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

云主机
云主机实例、镜像、实例规格、实例模板、配额相关的接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#import <Foundation/Foundation.h>
#import <JDCloudOCSDKVm/VmExecutor.h>

@implementation VmClient

@synthesize userAgent = _userAgent;
@synthesize serviceName = _serviceName;
@synthesize version = _version;

-(void) addCustomerHeaderWithKey:(NSString*) key
                           value:(NSString*) value{
    if(![self customHeader])
    {
        self.customHeader = [[NSMutableDictionary alloc] init];
    }
    if(key && value)
    {
        [[self customHeader] setValue:value forKey:key];
    }
   
}

-(id)initWithGlobalConfig{
    if(![GlobalConfig credential])
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@"GlobalConfig credential not config" userInfo:nil];
        @throw e;
    }
    self.credential = [GlobalConfig credential];
    if(![GlobalConfig sdkEnvironment])
    {
        self.sdkEnvironment = [[SDKEnvironment alloc] initWithEndPoint:@"vm.jdcloud-api.com"];
    }else
    {
        self.sdkEnvironment = [GlobalConfig sdkEnvironment];
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 vm  v1";
    _serviceName = @"vm";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)initWithCredential:(Credential*)credential
         sdkEnvironment:(SDKEnvironment*)sdkEnvironment
{
    if(!credential)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" credential can not null" userInfo:nil];
        @throw e;
    }else{
        self.credential = credential;
    }
    
    if(!sdkEnvironment)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" sdkEnvironment can not null" userInfo:nil];
        @throw e;
    }else{
        self.sdkEnvironment = sdkEnvironment;
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 vm  v1";
    _serviceName = @"vm";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)initWithCredential:(Credential*)credential
{
    if(!credential)
    {
        NSException *e = [SDKArgumentNullException exceptionWithName:@"ArgumentNullException" reason:@" credential can not null" userInfo:nil];
        @throw e;
    }else{
        self.credential = credential;
    }
    if(![GlobalConfig sdkEnvironment])
    {
        self.sdkEnvironment = [[SDKEnvironment alloc] initWithEndPoint:@"vm.jdcloud-api.com"];
    }else
    {
        self.sdkEnvironment = [GlobalConfig sdkEnvironment];
    }
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 vm  v1";
    _serviceName = @"vm";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}

-(id)init{
    self.httpRequestProtocol = @"https";
    _userAgent = @"JdCloudOCSdk 0.0.1 vm  v1";
    _serviceName = @"vm";
    _version = @"v1";
    self.contentType = @"application/json";
    return self;
}


/**
describeImageMembers sync request
@param describeImageMembersRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImageMembersResponse` the request response data model
*/
-(NSDictionary*) describeImageMembersSyncWithRequest:(VmDescribeImageMembersRequest*) describeImageMembersRequest
{
VmDescribeImageMembersExecutor* excutor = [[VmDescribeImageMembersExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeImageMembersRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImageMembersResponse* response = [[VmDescribeImageMembersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeImageMembersResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeImageMembersAsyncWithRequest:(VmDescribeImageMembersRequest*) describeImageMembersRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeImageMembersResponse* _Nullable describeImageMembersResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeImageMembersExecutor* excutor = [[VmDescribeImageMembersExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeImageMembersRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImageMembersResponse* response = [[VmDescribeImageMembersResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createInstances sync request
@param createInstancesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createInstancesResponse` the request response data model
*/
-(NSDictionary*) createInstancesSyncWithRequest:(VmCreateInstancesRequest*) createInstancesRequest
{
VmCreateInstancesExecutor* excutor = [[VmCreateInstancesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createInstancesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCreateInstancesResponse* response = [[VmCreateInstancesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createInstancesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createInstancesAsyncWithRequest:(VmCreateInstancesRequest*) createInstancesRequest
                       completionHandler:(void(^)(int statusCode,VmCreateInstancesResponse* _Nullable createInstancesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmCreateInstancesExecutor* excutor = [[VmCreateInstancesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createInstancesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCreateInstancesResponse* response = [[VmCreateInstancesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
shareImage sync request
@param shareImageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `shareImageResponse` the request response data model
*/
-(NSDictionary*) shareImageSyncWithRequest:(VmShareImageRequest*) shareImageRequest
{
VmShareImageExecutor* excutor = [[VmShareImageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:shareImageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmShareImageResponse* response = [[VmShareImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"shareImageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)shareImageAsyncWithRequest:(VmShareImageRequest*) shareImageRequest
                       completionHandler:(void(^)(int statusCode,VmShareImageResponse* _Nullable shareImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmShareImageExecutor* excutor = [[VmShareImageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:shareImageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmShareImageResponse* response = [[VmShareImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
startInstance sync request
@param startInstanceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `startInstanceResponse` the request response data model
*/
-(NSDictionary*) startInstanceSyncWithRequest:(VmStartInstanceRequest*) startInstanceRequest
{
VmStartInstanceExecutor* excutor = [[VmStartInstanceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:startInstanceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmStartInstanceResponse* response = [[VmStartInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"startInstanceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)startInstanceAsyncWithRequest:(VmStartInstanceRequest*) startInstanceRequest
                       completionHandler:(void(^)(int statusCode,VmStartInstanceResponse* _Nullable startInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmStartInstanceExecutor* excutor = [[VmStartInstanceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:startInstanceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmStartInstanceResponse* response = [[VmStartInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
unReleaseImage sync request
@param unReleaseImageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `unReleaseImageResponse` the request response data model
*/
-(NSDictionary*) unReleaseImageSyncWithRequest:(VmUnReleaseImageRequest*) unReleaseImageRequest
{
VmUnReleaseImageExecutor* excutor = [[VmUnReleaseImageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:unReleaseImageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmUnReleaseImageResponse* response = [[VmUnReleaseImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"unReleaseImageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)unReleaseImageAsyncWithRequest:(VmUnReleaseImageRequest*) unReleaseImageRequest
                       completionHandler:(void(^)(int statusCode,VmUnReleaseImageResponse* _Nullable unReleaseImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmUnReleaseImageExecutor* excutor = [[VmUnReleaseImageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:unReleaseImageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmUnReleaseImageResponse* response = [[VmUnReleaseImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
unShareImage sync request
@param unShareImageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `unShareImageResponse` the request response data model
*/
-(NSDictionary*) unShareImageSyncWithRequest:(VmUnShareImageRequest*) unShareImageRequest
{
VmUnShareImageExecutor* excutor = [[VmUnShareImageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:unShareImageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmUnShareImageResponse* response = [[VmUnShareImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"unShareImageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)unShareImageAsyncWithRequest:(VmUnShareImageRequest*) unShareImageRequest
                       completionHandler:(void(^)(int statusCode,VmUnShareImageResponse* _Nullable unShareImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmUnShareImageExecutor* excutor = [[VmUnShareImageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:unShareImageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmUnShareImageResponse* response = [[VmUnShareImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeImageConstraintsBatch sync request
@param describeImageConstraintsBatchRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImageConstraintsBatchResponse` the request response data model
*/
-(NSDictionary*) describeImageConstraintsBatchSyncWithRequest:(VmDescribeImageConstraintsBatchRequest*) describeImageConstraintsBatchRequest
{
VmDescribeImageConstraintsBatchExecutor* excutor = [[VmDescribeImageConstraintsBatchExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeImageConstraintsBatchRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImageConstraintsBatchResponse* response = [[VmDescribeImageConstraintsBatchResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeImageConstraintsBatchResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeImageConstraintsBatchAsyncWithRequest:(VmDescribeImageConstraintsBatchRequest*) describeImageConstraintsBatchRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeImageConstraintsBatchResponse* _Nullable describeImageConstraintsBatchResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeImageConstraintsBatchExecutor* excutor = [[VmDescribeImageConstraintsBatchExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeImageConstraintsBatchRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImageConstraintsBatchResponse* response = [[VmDescribeImageConstraintsBatchResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
updateInstanceTemplate sync request
@param updateInstanceTemplateRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `updateInstanceTemplateResponse` the request response data model
*/
-(NSDictionary*) updateInstanceTemplateSyncWithRequest:(VmUpdateInstanceTemplateRequest*) updateInstanceTemplateRequest
{
VmUpdateInstanceTemplateExecutor* excutor = [[VmUpdateInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:updateInstanceTemplateRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmUpdateInstanceTemplateResponse* response = [[VmUpdateInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"updateInstanceTemplateResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)updateInstanceTemplateAsyncWithRequest:(VmUpdateInstanceTemplateRequest*) updateInstanceTemplateRequest
                       completionHandler:(void(^)(int statusCode,VmUpdateInstanceTemplateResponse* _Nullable updateInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmUpdateInstanceTemplateExecutor* excutor = [[VmUpdateInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:updateInstanceTemplateRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmUpdateInstanceTemplateResponse* response = [[VmUpdateInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
attachDisk sync request
@param attachDiskRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `attachDiskResponse` the request response data model
*/
-(NSDictionary*) attachDiskSyncWithRequest:(VmAttachDiskRequest*) attachDiskRequest
{
VmAttachDiskExecutor* excutor = [[VmAttachDiskExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:attachDiskRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmAttachDiskResponse* response = [[VmAttachDiskResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"attachDiskResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)attachDiskAsyncWithRequest:(VmAttachDiskRequest*) attachDiskRequest
                       completionHandler:(void(^)(int statusCode,VmAttachDiskResponse* _Nullable attachDiskResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmAttachDiskExecutor* excutor = [[VmAttachDiskExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:attachDiskRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmAttachDiskResponse* response = [[VmAttachDiskResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
modifyInstancePassword sync request
@param modifyInstancePasswordRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstancePasswordResponse` the request response data model
*/
-(NSDictionary*) modifyInstancePasswordSyncWithRequest:(VmModifyInstancePasswordRequest*) modifyInstancePasswordRequest
{
VmModifyInstancePasswordExecutor* excutor = [[VmModifyInstancePasswordExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:modifyInstancePasswordRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyInstancePasswordResponse* response = [[VmModifyInstancePasswordResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"modifyInstancePasswordResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)modifyInstancePasswordAsyncWithRequest:(VmModifyInstancePasswordRequest*) modifyInstancePasswordRequest
                       completionHandler:(void(^)(int statusCode,VmModifyInstancePasswordResponse* _Nullable modifyInstancePasswordResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmModifyInstancePasswordExecutor* excutor = [[VmModifyInstancePasswordExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:modifyInstancePasswordRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyInstancePasswordResponse* response = [[VmModifyInstancePasswordResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
attachNetworkInterface sync request
@param attachNetworkInterfaceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `attachNetworkInterfaceResponse` the request response data model
*/
-(NSDictionary*) attachNetworkInterfaceSyncWithRequest:(VmAttachNetworkInterfaceRequest*) attachNetworkInterfaceRequest
{
VmAttachNetworkInterfaceExecutor* excutor = [[VmAttachNetworkInterfaceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:attachNetworkInterfaceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmAttachNetworkInterfaceResponse* response = [[VmAttachNetworkInterfaceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"attachNetworkInterfaceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)attachNetworkInterfaceAsyncWithRequest:(VmAttachNetworkInterfaceRequest*) attachNetworkInterfaceRequest
                       completionHandler:(void(^)(int statusCode,VmAttachNetworkInterfaceResponse* _Nullable attachNetworkInterfaceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmAttachNetworkInterfaceExecutor* excutor = [[VmAttachNetworkInterfaceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:attachNetworkInterfaceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmAttachNetworkInterfaceResponse* response = [[VmAttachNetworkInterfaceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteKeypair sync request
@param deleteKeypairRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteKeypairResponse` the request response data model
*/
-(NSDictionary*) deleteKeypairSyncWithRequest:(VmDeleteKeypairRequest*) deleteKeypairRequest
{
VmDeleteKeypairExecutor* excutor = [[VmDeleteKeypairExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteKeypairRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDeleteKeypairResponse* response = [[VmDeleteKeypairResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteKeypairResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteKeypairAsyncWithRequest:(VmDeleteKeypairRequest*) deleteKeypairRequest
                       completionHandler:(void(^)(int statusCode,VmDeleteKeypairResponse* _Nullable deleteKeypairResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDeleteKeypairExecutor* excutor = [[VmDeleteKeypairExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteKeypairRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDeleteKeypairResponse* response = [[VmDeleteKeypairResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeImage sync request
@param describeImageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImageResponse` the request response data model
*/
-(NSDictionary*) describeImageSyncWithRequest:(VmDescribeImageRequest*) describeImageRequest
{
VmDescribeImageExecutor* excutor = [[VmDescribeImageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeImageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImageResponse* response = [[VmDescribeImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeImageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeImageAsyncWithRequest:(VmDescribeImageRequest*) describeImageRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeImageResponse* _Nullable describeImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeImageExecutor* excutor = [[VmDescribeImageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeImageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImageResponse* response = [[VmDescribeImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
importKeypair sync request
@param importKeypairRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `importKeypairResponse` the request response data model
*/
-(NSDictionary*) importKeypairSyncWithRequest:(VmImportKeypairRequest*) importKeypairRequest
{
VmImportKeypairExecutor* excutor = [[VmImportKeypairExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:importKeypairRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmImportKeypairResponse* response = [[VmImportKeypairResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"importKeypairResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)importKeypairAsyncWithRequest:(VmImportKeypairRequest*) importKeypairRequest
                       completionHandler:(void(^)(int statusCode,VmImportKeypairResponse* _Nullable importKeypairResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmImportKeypairExecutor* excutor = [[VmImportKeypairExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:importKeypairRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmImportKeypairResponse* response = [[VmImportKeypairResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeInstance sync request
@param describeInstanceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceResponse` the request response data model
*/
-(NSDictionary*) describeInstanceSyncWithRequest:(VmDescribeInstanceRequest*) describeInstanceRequest
{
VmDescribeInstanceExecutor* excutor = [[VmDescribeInstanceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeInstanceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceResponse* response = [[VmDescribeInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeInstanceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeInstanceAsyncWithRequest:(VmDescribeInstanceRequest*) describeInstanceRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeInstanceResponse* _Nullable describeInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeInstanceExecutor* excutor = [[VmDescribeInstanceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeInstanceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceResponse* response = [[VmDescribeInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
copyImages sync request
@param copyImagesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `copyImagesResponse` the request response data model
*/
-(NSDictionary*) copyImagesSyncWithRequest:(VmCopyImagesRequest*) copyImagesRequest
{
VmCopyImagesExecutor* excutor = [[VmCopyImagesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:copyImagesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCopyImagesResponse* response = [[VmCopyImagesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"copyImagesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)copyImagesAsyncWithRequest:(VmCopyImagesRequest*) copyImagesRequest
                       completionHandler:(void(^)(int statusCode,VmCopyImagesResponse* _Nullable copyImagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmCopyImagesExecutor* excutor = [[VmCopyImagesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:copyImagesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCopyImagesResponse* response = [[VmCopyImagesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeQuotas sync request
@param describeQuotasRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeQuotasResponse` the request response data model
*/
-(NSDictionary*) describeQuotasSyncWithRequest:(VmDescribeQuotasRequest*) describeQuotasRequest
{
VmDescribeQuotasExecutor* excutor = [[VmDescribeQuotasExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeQuotasRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeQuotasResponse* response = [[VmDescribeQuotasResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeQuotasResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeQuotasAsyncWithRequest:(VmDescribeQuotasRequest*) describeQuotasRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeQuotasResponse* _Nullable describeQuotasResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeQuotasExecutor* excutor = [[VmDescribeQuotasExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeQuotasRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeQuotasResponse* response = [[VmDescribeQuotasResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
modifyInstanceNetworkAttribute sync request
@param modifyInstanceNetworkAttributeRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceNetworkAttributeResponse` the request response data model
*/
-(NSDictionary*) modifyInstanceNetworkAttributeSyncWithRequest:(VmModifyInstanceNetworkAttributeRequest*) modifyInstanceNetworkAttributeRequest
{
VmModifyInstanceNetworkAttributeExecutor* excutor = [[VmModifyInstanceNetworkAttributeExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:modifyInstanceNetworkAttributeRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyInstanceNetworkAttributeResponse* response = [[VmModifyInstanceNetworkAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"modifyInstanceNetworkAttributeResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)modifyInstanceNetworkAttributeAsyncWithRequest:(VmModifyInstanceNetworkAttributeRequest*) modifyInstanceNetworkAttributeRequest
                       completionHandler:(void(^)(int statusCode,VmModifyInstanceNetworkAttributeResponse* _Nullable modifyInstanceNetworkAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmModifyInstanceNetworkAttributeExecutor* excutor = [[VmModifyInstanceNetworkAttributeExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:modifyInstanceNetworkAttributeRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyInstanceNetworkAttributeResponse* response = [[VmModifyInstanceNetworkAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
modifyImageAttribute sync request
@param modifyImageAttributeRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyImageAttributeResponse` the request response data model
*/
-(NSDictionary*) modifyImageAttributeSyncWithRequest:(VmModifyImageAttributeRequest*) modifyImageAttributeRequest
{
VmModifyImageAttributeExecutor* excutor = [[VmModifyImageAttributeExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:modifyImageAttributeRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyImageAttributeResponse* response = [[VmModifyImageAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"modifyImageAttributeResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)modifyImageAttributeAsyncWithRequest:(VmModifyImageAttributeRequest*) modifyImageAttributeRequest
                       completionHandler:(void(^)(int statusCode,VmModifyImageAttributeResponse* _Nullable modifyImageAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmModifyImageAttributeExecutor* excutor = [[VmModifyImageAttributeExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:modifyImageAttributeRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyImageAttributeResponse* response = [[VmModifyImageAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
rebootInstance sync request
@param rebootInstanceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `rebootInstanceResponse` the request response data model
*/
-(NSDictionary*) rebootInstanceSyncWithRequest:(VmRebootInstanceRequest*) rebootInstanceRequest
{
VmRebootInstanceExecutor* excutor = [[VmRebootInstanceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:rebootInstanceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmRebootInstanceResponse* response = [[VmRebootInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"rebootInstanceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)rebootInstanceAsyncWithRequest:(VmRebootInstanceRequest*) rebootInstanceRequest
                       completionHandler:(void(^)(int statusCode,VmRebootInstanceResponse* _Nullable rebootInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmRebootInstanceExecutor* excutor = [[VmRebootInstanceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:rebootInstanceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmRebootInstanceResponse* response = [[VmRebootInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeKeypairs sync request
@param describeKeypairsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeKeypairsResponse` the request response data model
*/
-(NSDictionary*) describeKeypairsSyncWithRequest:(VmDescribeKeypairsRequest*) describeKeypairsRequest
{
VmDescribeKeypairsExecutor* excutor = [[VmDescribeKeypairsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeKeypairsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeKeypairsResponse* response = [[VmDescribeKeypairsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeKeypairsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeKeypairsAsyncWithRequest:(VmDescribeKeypairsRequest*) describeKeypairsRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeKeypairsResponse* _Nullable describeKeypairsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeKeypairsExecutor* excutor = [[VmDescribeKeypairsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeKeypairsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeKeypairsResponse* response = [[VmDescribeKeypairsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
detachDisk sync request
@param detachDiskRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `detachDiskResponse` the request response data model
*/
-(NSDictionary*) detachDiskSyncWithRequest:(VmDetachDiskRequest*) detachDiskRequest
{
VmDetachDiskExecutor* excutor = [[VmDetachDiskExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:detachDiskRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDetachDiskResponse* response = [[VmDetachDiskResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"detachDiskResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)detachDiskAsyncWithRequest:(VmDetachDiskRequest*) detachDiskRequest
                       completionHandler:(void(^)(int statusCode,VmDetachDiskResponse* _Nullable detachDiskResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDetachDiskExecutor* excutor = [[VmDetachDiskExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:detachDiskRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDetachDiskResponse* response = [[VmDetachDiskResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
importImage sync request
@param importImageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `importImageResponse` the request response data model
*/
-(NSDictionary*) importImageSyncWithRequest:(VmImportImageRequest*) importImageRequest
{
VmImportImageExecutor* excutor = [[VmImportImageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:importImageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmImportImageResponse* response = [[VmImportImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"importImageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)importImageAsyncWithRequest:(VmImportImageRequest*) importImageRequest
                       completionHandler:(void(^)(int statusCode,VmImportImageResponse* _Nullable importImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmImportImageExecutor* excutor = [[VmImportImageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:importImageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmImportImageResponse* response = [[VmImportImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createInstanceTemplate sync request
@param createInstanceTemplateRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createInstanceTemplateResponse` the request response data model
*/
-(NSDictionary*) createInstanceTemplateSyncWithRequest:(VmCreateInstanceTemplateRequest*) createInstanceTemplateRequest
{
VmCreateInstanceTemplateExecutor* excutor = [[VmCreateInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createInstanceTemplateRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCreateInstanceTemplateResponse* response = [[VmCreateInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createInstanceTemplateResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createInstanceTemplateAsyncWithRequest:(VmCreateInstanceTemplateRequest*) createInstanceTemplateRequest
                       completionHandler:(void(^)(int statusCode,VmCreateInstanceTemplateResponse* _Nullable createInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmCreateInstanceTemplateExecutor* excutor = [[VmCreateInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createInstanceTemplateRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCreateInstanceTemplateResponse* response = [[VmCreateInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createImage sync request
@param createImageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createImageResponse` the request response data model
*/
-(NSDictionary*) createImageSyncWithRequest:(VmCreateImageRequest*) createImageRequest
{
VmCreateImageExecutor* excutor = [[VmCreateImageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createImageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCreateImageResponse* response = [[VmCreateImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createImageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createImageAsyncWithRequest:(VmCreateImageRequest*) createImageRequest
                       completionHandler:(void(^)(int statusCode,VmCreateImageResponse* _Nullable createImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmCreateImageExecutor* excutor = [[VmCreateImageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createImageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCreateImageResponse* response = [[VmCreateImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
associateElasticIp sync request
@param associateElasticIpRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `associateElasticIpResponse` the request response data model
*/
-(NSDictionary*) associateElasticIpSyncWithRequest:(VmAssociateElasticIpRequest*) associateElasticIpRequest
{
VmAssociateElasticIpExecutor* excutor = [[VmAssociateElasticIpExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:associateElasticIpRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmAssociateElasticIpResponse* response = [[VmAssociateElasticIpResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"associateElasticIpResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)associateElasticIpAsyncWithRequest:(VmAssociateElasticIpRequest*) associateElasticIpRequest
                       completionHandler:(void(^)(int statusCode,VmAssociateElasticIpResponse* _Nullable associateElasticIpResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmAssociateElasticIpExecutor* excutor = [[VmAssociateElasticIpExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:associateElasticIpRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmAssociateElasticIpResponse* response = [[VmAssociateElasticIpResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
disassociateElasticIp sync request
@param disassociateElasticIpRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `disassociateElasticIpResponse` the request response data model
*/
-(NSDictionary*) disassociateElasticIpSyncWithRequest:(VmDisassociateElasticIpRequest*) disassociateElasticIpRequest
{
VmDisassociateElasticIpExecutor* excutor = [[VmDisassociateElasticIpExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:disassociateElasticIpRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDisassociateElasticIpResponse* response = [[VmDisassociateElasticIpResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"disassociateElasticIpResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)disassociateElasticIpAsyncWithRequest:(VmDisassociateElasticIpRequest*) disassociateElasticIpRequest
                       completionHandler:(void(^)(int statusCode,VmDisassociateElasticIpResponse* _Nullable disassociateElasticIpResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDisassociateElasticIpExecutor* excutor = [[VmDisassociateElasticIpExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:disassociateElasticIpRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDisassociateElasticIpResponse* response = [[VmDisassociateElasticIpResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
stopInstance sync request
@param stopInstanceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `stopInstanceResponse` the request response data model
*/
-(NSDictionary*) stopInstanceSyncWithRequest:(VmStopInstanceRequest*) stopInstanceRequest
{
VmStopInstanceExecutor* excutor = [[VmStopInstanceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:stopInstanceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmStopInstanceResponse* response = [[VmStopInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"stopInstanceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)stopInstanceAsyncWithRequest:(VmStopInstanceRequest*) stopInstanceRequest
                       completionHandler:(void(^)(int statusCode,VmStopInstanceResponse* _Nullable stopInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmStopInstanceExecutor* excutor = [[VmStopInstanceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:stopInstanceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmStopInstanceResponse* response = [[VmStopInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeInstanceTemplate sync request
@param describeInstanceTemplateRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceTemplateResponse` the request response data model
*/
-(NSDictionary*) describeInstanceTemplateSyncWithRequest:(VmDescribeInstanceTemplateRequest*) describeInstanceTemplateRequest
{
VmDescribeInstanceTemplateExecutor* excutor = [[VmDescribeInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeInstanceTemplateRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceTemplateResponse* response = [[VmDescribeInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeInstanceTemplateResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeInstanceTemplateAsyncWithRequest:(VmDescribeInstanceTemplateRequest*) describeInstanceTemplateRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeInstanceTemplateResponse* _Nullable describeInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeInstanceTemplateExecutor* excutor = [[VmDescribeInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeInstanceTemplateRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceTemplateResponse* response = [[VmDescribeInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeImages sync request
@param describeImagesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImagesResponse` the request response data model
*/
-(NSDictionary*) describeImagesSyncWithRequest:(VmDescribeImagesRequest*) describeImagesRequest
{
VmDescribeImagesExecutor* excutor = [[VmDescribeImagesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeImagesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImagesResponse* response = [[VmDescribeImagesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeImagesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeImagesAsyncWithRequest:(VmDescribeImagesRequest*) describeImagesRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeImagesResponse* _Nullable describeImagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeImagesExecutor* excutor = [[VmDescribeImagesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeImagesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImagesResponse* response = [[VmDescribeImagesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeInstanceVncUrl sync request
@param describeInstanceVncUrlRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceVncUrlResponse` the request response data model
*/
-(NSDictionary*) describeInstanceVncUrlSyncWithRequest:(VmDescribeInstanceVncUrlRequest*) describeInstanceVncUrlRequest
{
VmDescribeInstanceVncUrlExecutor* excutor = [[VmDescribeInstanceVncUrlExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeInstanceVncUrlRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceVncUrlResponse* response = [[VmDescribeInstanceVncUrlResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeInstanceVncUrlResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeInstanceVncUrlAsyncWithRequest:(VmDescribeInstanceVncUrlRequest*) describeInstanceVncUrlRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeInstanceVncUrlResponse* _Nullable describeInstanceVncUrlResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeInstanceVncUrlExecutor* excutor = [[VmDescribeInstanceVncUrlExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeInstanceVncUrlRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceVncUrlResponse* response = [[VmDescribeInstanceVncUrlResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeImageConstraints sync request
@param describeImageConstraintsRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImageConstraintsResponse` the request response data model
*/
-(NSDictionary*) describeImageConstraintsSyncWithRequest:(VmDescribeImageConstraintsRequest*) describeImageConstraintsRequest
{
VmDescribeImageConstraintsExecutor* excutor = [[VmDescribeImageConstraintsExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeImageConstraintsRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImageConstraintsResponse* response = [[VmDescribeImageConstraintsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeImageConstraintsResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeImageConstraintsAsyncWithRequest:(VmDescribeImageConstraintsRequest*) describeImageConstraintsRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeImageConstraintsResponse* _Nullable describeImageConstraintsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeImageConstraintsExecutor* excutor = [[VmDescribeImageConstraintsExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeImageConstraintsRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeImageConstraintsResponse* response = [[VmDescribeImageConstraintsResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
rebuildInstance sync request
@param rebuildInstanceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `rebuildInstanceResponse` the request response data model
*/
-(NSDictionary*) rebuildInstanceSyncWithRequest:(VmRebuildInstanceRequest*) rebuildInstanceRequest
{
VmRebuildInstanceExecutor* excutor = [[VmRebuildInstanceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:rebuildInstanceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmRebuildInstanceResponse* response = [[VmRebuildInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"rebuildInstanceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)rebuildInstanceAsyncWithRequest:(VmRebuildInstanceRequest*) rebuildInstanceRequest
                       completionHandler:(void(^)(int statusCode,VmRebuildInstanceResponse* _Nullable rebuildInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmRebuildInstanceExecutor* excutor = [[VmRebuildInstanceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:rebuildInstanceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmRebuildInstanceResponse* response = [[VmRebuildInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
modifyInstanceAttribute sync request
@param modifyInstanceAttributeRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceAttributeResponse` the request response data model
*/
-(NSDictionary*) modifyInstanceAttributeSyncWithRequest:(VmModifyInstanceAttributeRequest*) modifyInstanceAttributeRequest
{
VmModifyInstanceAttributeExecutor* excutor = [[VmModifyInstanceAttributeExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:modifyInstanceAttributeRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyInstanceAttributeResponse* response = [[VmModifyInstanceAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"modifyInstanceAttributeResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)modifyInstanceAttributeAsyncWithRequest:(VmModifyInstanceAttributeRequest*) modifyInstanceAttributeRequest
                       completionHandler:(void(^)(int statusCode,VmModifyInstanceAttributeResponse* _Nullable modifyInstanceAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmModifyInstanceAttributeExecutor* excutor = [[VmModifyInstanceAttributeExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:modifyInstanceAttributeRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyInstanceAttributeResponse* response = [[VmModifyInstanceAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
resizeInstance sync request
@param resizeInstanceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `resizeInstanceResponse` the request response data model
*/
-(NSDictionary*) resizeInstanceSyncWithRequest:(VmResizeInstanceRequest*) resizeInstanceRequest
{
VmResizeInstanceExecutor* excutor = [[VmResizeInstanceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:resizeInstanceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmResizeInstanceResponse* response = [[VmResizeInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"resizeInstanceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)resizeInstanceAsyncWithRequest:(VmResizeInstanceRequest*) resizeInstanceRequest
                       completionHandler:(void(^)(int statusCode,VmResizeInstanceResponse* _Nullable resizeInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmResizeInstanceExecutor* excutor = [[VmResizeInstanceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:resizeInstanceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmResizeInstanceResponse* response = [[VmResizeInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
releaseImage sync request
@param releaseImageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `releaseImageResponse` the request response data model
*/
-(NSDictionary*) releaseImageSyncWithRequest:(VmReleaseImageRequest*) releaseImageRequest
{
VmReleaseImageExecutor* excutor = [[VmReleaseImageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:releaseImageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmReleaseImageResponse* response = [[VmReleaseImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"releaseImageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)releaseImageAsyncWithRequest:(VmReleaseImageRequest*) releaseImageRequest
                       completionHandler:(void(^)(int statusCode,VmReleaseImageResponse* _Nullable releaseImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmReleaseImageExecutor* excutor = [[VmReleaseImageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:releaseImageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmReleaseImageResponse* response = [[VmReleaseImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteImage sync request
@param deleteImageRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteImageResponse` the request response data model
*/
-(NSDictionary*) deleteImageSyncWithRequest:(VmDeleteImageRequest*) deleteImageRequest
{
VmDeleteImageExecutor* excutor = [[VmDeleteImageExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteImageRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDeleteImageResponse* response = [[VmDeleteImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteImageResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteImageAsyncWithRequest:(VmDeleteImageRequest*) deleteImageRequest
                       completionHandler:(void(^)(int statusCode,VmDeleteImageResponse* _Nullable deleteImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDeleteImageExecutor* excutor = [[VmDeleteImageExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteImageRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDeleteImageResponse* response = [[VmDeleteImageResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeInstanceTypes sync request
@param describeInstanceTypesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceTypesResponse` the request response data model
*/
-(NSDictionary*) describeInstanceTypesSyncWithRequest:(VmDescribeInstanceTypesRequest*) describeInstanceTypesRequest
{
VmDescribeInstanceTypesExecutor* excutor = [[VmDescribeInstanceTypesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeInstanceTypesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceTypesResponse* response = [[VmDescribeInstanceTypesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeInstanceTypesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeInstanceTypesAsyncWithRequest:(VmDescribeInstanceTypesRequest*) describeInstanceTypesRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeInstanceTypesResponse* _Nullable describeInstanceTypesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeInstanceTypesExecutor* excutor = [[VmDescribeInstanceTypesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeInstanceTypesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceTypesResponse* response = [[VmDescribeInstanceTypesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteInstanceTemplate sync request
@param deleteInstanceTemplateRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteInstanceTemplateResponse` the request response data model
*/
-(NSDictionary*) deleteInstanceTemplateSyncWithRequest:(VmDeleteInstanceTemplateRequest*) deleteInstanceTemplateRequest
{
VmDeleteInstanceTemplateExecutor* excutor = [[VmDeleteInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteInstanceTemplateRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDeleteInstanceTemplateResponse* response = [[VmDeleteInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteInstanceTemplateResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteInstanceTemplateAsyncWithRequest:(VmDeleteInstanceTemplateRequest*) deleteInstanceTemplateRequest
                       completionHandler:(void(^)(int statusCode,VmDeleteInstanceTemplateResponse* _Nullable deleteInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDeleteInstanceTemplateExecutor* excutor = [[VmDeleteInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteInstanceTemplateRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDeleteInstanceTemplateResponse* response = [[VmDeleteInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
detachNetworkInterface sync request
@param detachNetworkInterfaceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `detachNetworkInterfaceResponse` the request response data model
*/
-(NSDictionary*) detachNetworkInterfaceSyncWithRequest:(VmDetachNetworkInterfaceRequest*) detachNetworkInterfaceRequest
{
VmDetachNetworkInterfaceExecutor* excutor = [[VmDetachNetworkInterfaceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:detachNetworkInterfaceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDetachNetworkInterfaceResponse* response = [[VmDetachNetworkInterfaceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"detachNetworkInterfaceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)detachNetworkInterfaceAsyncWithRequest:(VmDetachNetworkInterfaceRequest*) detachNetworkInterfaceRequest
                       completionHandler:(void(^)(int statusCode,VmDetachNetworkInterfaceResponse* _Nullable detachNetworkInterfaceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDetachNetworkInterfaceExecutor* excutor = [[VmDetachNetworkInterfaceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:detachNetworkInterfaceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDetachNetworkInterfaceResponse* response = [[VmDetachNetworkInterfaceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeInstanceTemplates sync request
@param describeInstanceTemplatesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceTemplatesResponse` the request response data model
*/
-(NSDictionary*) describeInstanceTemplatesSyncWithRequest:(VmDescribeInstanceTemplatesRequest*) describeInstanceTemplatesRequest
{
VmDescribeInstanceTemplatesExecutor* excutor = [[VmDescribeInstanceTemplatesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeInstanceTemplatesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceTemplatesResponse* response = [[VmDescribeInstanceTemplatesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeInstanceTemplatesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeInstanceTemplatesAsyncWithRequest:(VmDescribeInstanceTemplatesRequest*) describeInstanceTemplatesRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeInstanceTemplatesResponse* _Nullable describeInstanceTemplatesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeInstanceTemplatesExecutor* excutor = [[VmDescribeInstanceTemplatesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeInstanceTemplatesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceTemplatesResponse* response = [[VmDescribeInstanceTemplatesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
modifyInstanceDiskAttribute sync request
@param modifyInstanceDiskAttributeRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceDiskAttributeResponse` the request response data model
*/
-(NSDictionary*) modifyInstanceDiskAttributeSyncWithRequest:(VmModifyInstanceDiskAttributeRequest*) modifyInstanceDiskAttributeRequest
{
VmModifyInstanceDiskAttributeExecutor* excutor = [[VmModifyInstanceDiskAttributeExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:modifyInstanceDiskAttributeRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyInstanceDiskAttributeResponse* response = [[VmModifyInstanceDiskAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"modifyInstanceDiskAttributeResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)modifyInstanceDiskAttributeAsyncWithRequest:(VmModifyInstanceDiskAttributeRequest*) modifyInstanceDiskAttributeRequest
                       completionHandler:(void(^)(int statusCode,VmModifyInstanceDiskAttributeResponse* _Nullable modifyInstanceDiskAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmModifyInstanceDiskAttributeExecutor* excutor = [[VmModifyInstanceDiskAttributeExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:modifyInstanceDiskAttributeRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmModifyInstanceDiskAttributeResponse* response = [[VmModifyInstanceDiskAttributeResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeInstancePrivateIpAddress sync request
@param describeInstancePrivateIpAddressRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstancePrivateIpAddressResponse` the request response data model
*/
-(NSDictionary*) describeInstancePrivateIpAddressSyncWithRequest:(VmDescribeInstancePrivateIpAddressRequest*) describeInstancePrivateIpAddressRequest
{
VmDescribeInstancePrivateIpAddressExecutor* excutor = [[VmDescribeInstancePrivateIpAddressExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeInstancePrivateIpAddressRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstancePrivateIpAddressResponse* response = [[VmDescribeInstancePrivateIpAddressResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeInstancePrivateIpAddressResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeInstancePrivateIpAddressAsyncWithRequest:(VmDescribeInstancePrivateIpAddressRequest*) describeInstancePrivateIpAddressRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeInstancePrivateIpAddressResponse* _Nullable describeInstancePrivateIpAddressResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeInstancePrivateIpAddressExecutor* excutor = [[VmDescribeInstancePrivateIpAddressExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeInstancePrivateIpAddressRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstancePrivateIpAddressResponse* response = [[VmDescribeInstancePrivateIpAddressResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
imageTasks sync request
@param imageTasksRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `imageTasksResponse` the request response data model
*/
-(NSDictionary*) imageTasksSyncWithRequest:(VmImageTasksRequest*) imageTasksRequest
{
VmImageTasksExecutor* excutor = [[VmImageTasksExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:imageTasksRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmImageTasksResponse* response = [[VmImageTasksResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"imageTasksResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)imageTasksAsyncWithRequest:(VmImageTasksRequest*) imageTasksRequest
                       completionHandler:(void(^)(int statusCode,VmImageTasksResponse* _Nullable imageTasksResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmImageTasksExecutor* excutor = [[VmImageTasksExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:imageTasksRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmImageTasksResponse* response = [[VmImageTasksResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeInstanceStatus sync request
@param describeInstanceStatusRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceStatusResponse` the request response data model
*/
-(NSDictionary*) describeInstanceStatusSyncWithRequest:(VmDescribeInstanceStatusRequest*) describeInstanceStatusRequest
{
VmDescribeInstanceStatusExecutor* excutor = [[VmDescribeInstanceStatusExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeInstanceStatusRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceStatusResponse* response = [[VmDescribeInstanceStatusResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeInstanceStatusResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeInstanceStatusAsyncWithRequest:(VmDescribeInstanceStatusRequest*) describeInstanceStatusRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeInstanceStatusResponse* _Nullable describeInstanceStatusResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeInstanceStatusExecutor* excutor = [[VmDescribeInstanceStatusExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeInstanceStatusRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstanceStatusResponse* response = [[VmDescribeInstanceStatusResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
deleteInstance sync request
@param deleteInstanceRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteInstanceResponse` the request response data model
*/
-(NSDictionary*) deleteInstanceSyncWithRequest:(VmDeleteInstanceRequest*) deleteInstanceRequest
{
VmDeleteInstanceExecutor* excutor = [[VmDeleteInstanceExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:deleteInstanceRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDeleteInstanceResponse* response = [[VmDeleteInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"deleteInstanceResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)deleteInstanceAsyncWithRequest:(VmDeleteInstanceRequest*) deleteInstanceRequest
                       completionHandler:(void(^)(int statusCode,VmDeleteInstanceResponse* _Nullable deleteInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDeleteInstanceExecutor* excutor = [[VmDeleteInstanceExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:deleteInstanceRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDeleteInstanceResponse* response = [[VmDeleteInstanceResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
createKeypair sync request
@param createKeypairRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createKeypairResponse` the request response data model
*/
-(NSDictionary*) createKeypairSyncWithRequest:(VmCreateKeypairRequest*) createKeypairRequest
{
VmCreateKeypairExecutor* excutor = [[VmCreateKeypairExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:createKeypairRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCreateKeypairResponse* response = [[VmCreateKeypairResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"createKeypairResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)createKeypairAsyncWithRequest:(VmCreateKeypairRequest*) createKeypairRequest
                       completionHandler:(void(^)(int statusCode,VmCreateKeypairResponse* _Nullable createKeypairResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmCreateKeypairExecutor* excutor = [[VmCreateKeypairExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:createKeypairRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmCreateKeypairResponse* response = [[VmCreateKeypairResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
describeInstances sync request
@param describeInstancesRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstancesResponse` the request response data model
*/
-(NSDictionary*) describeInstancesSyncWithRequest:(VmDescribeInstancesRequest*) describeInstancesRequest
{
VmDescribeInstancesExecutor* excutor = [[VmDescribeInstancesExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:describeInstancesRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstancesResponse* response = [[VmDescribeInstancesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"describeInstancesResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)describeInstancesAsyncWithRequest:(VmDescribeInstancesRequest*) describeInstancesRequest
                       completionHandler:(void(^)(int statusCode,VmDescribeInstancesResponse* _Nullable describeInstancesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmDescribeInstancesExecutor* excutor = [[VmDescribeInstancesExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:describeInstancesRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmDescribeInstancesResponse* response = [[VmDescribeInstancesResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}

/**
verifyInstanceTemplate sync request
@param verifyInstanceTemplateRequest request param
@return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `verifyInstanceTemplateResponse` the request response data model
*/
-(NSDictionary*) verifyInstanceTemplateSyncWithRequest:(VmVerifyInstanceTemplateRequest*) verifyInstanceTemplateRequest
{
VmVerifyInstanceTemplateExecutor* excutor = [[VmVerifyInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    NSDictionary* responseResult = [excutor executeSync:verifyInstanceTemplateRequest];
    if(responseResult)
    {
        NSData * resultData = [[responseResult objectForKey:@"dataResult"] copy];
        if(resultData)
        {
            NSMutableDictionary* result = [[NSMutableDictionary alloc]initWithDictionary:responseResult];
            
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmVerifyInstanceTemplateResponse* response = [[VmVerifyInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        [result setValue:response forKey:@"verifyInstanceTemplateResponse"];
                        return result;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
    }
    return responseResult;
}


-(void)verifyInstanceTemplateAsyncWithRequest:(VmVerifyInstanceTemplateRequest*) verifyInstanceTemplateRequest
                       completionHandler:(void(^)(int statusCode,VmVerifyInstanceTemplateResponse* _Nullable verifyInstanceTemplateResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
VmVerifyInstanceTemplateExecutor* excutor = [[VmVerifyInstanceTemplateExecutor alloc] initWithJDCloudClient:self];
    [excutor executeAsync:verifyInstanceTemplateRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        if(!error&&responseData)
        {
            NSData * resultData = [responseData copy];
            NSError *jsonError;
            NSDictionary* allKeys = [NSJSONSerialization JSONObjectWithData:resultData options:0 error:&jsonError];
            if(!jsonError&& allKeys)
            {
                @try {
                    VmVerifyInstanceTemplateResponse* response = [[VmVerifyInstanceTemplateResponse alloc]initWithDic:allKeys];
                    if(response)
                    {
                        completionHandler(statusCode,response,responseData,error);
                        return;
                    }
                } @catch (NSException *exception) {
                    if([GlobalConfig isDebug]){
                        NSLog(@"json serialize response data error,info is %@",exception.reason);
                    }
                }
            }
        }
        completionHandler(statusCode,nil,responseData,error);
    }];
}


 /**
 vm common sync request
 @param  jdcloudDataRequest request param
 @return key `statusCode` http request status code type is int
             `dataResult` the http request response data  type is NSData
             `requestError` the request error type is NSError
 */
 -(NSDictionary*) vmCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                                   url:(NSString*) url
                                                method:(NSString*) method{
    CommonExecutor* excutor = [[CommonExecutor alloc] initWithJDCloudClient:self url:url method:method];
    NSDictionary* responseResult = [excutor executeDataSync:jdcloudDataRequest];
    return responseResult;
}

-(void)vmCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                         url:(NSString*) url
                                      method:(NSString*) method
                           completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler
{
     CommonExecutor* excutor = [[CommonExecutor alloc] initWithJDCloudClient:self url:url method:method];
    
    [excutor executeDataAsync:jdcloudDataRequest completionHandler:^(int statusCode, NSData * _Nullable responseData, NSError * _Nullable error) {
        completionHandler(statusCode,responseData,error);
    }];
} 

@end
